package com.linkgie.galaxyframework.persistence.service;

import java.util.concurrent.Callable;

public interface TransactionService {

    /**
     * 执行事务；
     * 
     * @param <T>
     * @param task
     * @return
     */
    <T> T executeTransaction(Callable<T> task);

    /**
     * 执行事务；
     * 
     * @param task
     */
    void executeTransaction(Runnable task);

    /**
     * 执行新的事务；
     * 
     * @param <T>
     * @param task
     * @return
     */
    <T> T executeNewTransaction(Callable<T> task);

    /**
     * 执行新的事务；
     * 
     * @param task
     */
    void executeNewTransaction(Runnable task);

}
